package com.huatai.datacenter.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author Lion
 * @date 2023/4/18  9:38
 */
@Slf4j
public class ContextHolderInterceptor extends HandlerInterceptorAdapter {
	/**
	 * 预处理回调方法，实现处理器的预处理（如登录检查）
	 * 第三个参数为响应的处理器，即controller
	 * 返回true，表示继续流程，调用下一个拦截器或者处理器
	 * 返回false，表示流程中断，通过response产生响应
	 */
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
		//初始化请求参数
		return true;
	}

	/**
	 * 当前请求进行处理之后，也就是Controller方法调用之后执行，
	 * 但是它会在DispatcherServlet 进行视图返回渲染之前被调用。
	 * 此时我们可以通过modelAndView对模型数据进行处理或对视图进行处理。
	 */
	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response,
						   Object handler, ModelAndView modelAndView) {

	}

	/**
	 * 方法将在整个请求结束之后，也就是在DispatcherServlet渲染了对应的视图之后执行。
	 * 这个方法的主要作用是用于进行资源清理工作的。
	 */
	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
								Object handler, Exception ex) {
	}
}
